themeHelpers.ts ➔ getThemeAriaLabel   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
export function getOppositeTheme(currentTheme: string | null): 'light' | 'dark' {
2
  return currentTheme === 'dark' ? 'light' : 'dark';
3
}
4
5
export function getOSPreferredTheme(): 'light' | 'dark' {
6
  if (typeof window !== 'undefined' && window.matchMedia) {
7
    return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
8
  }
9
  return 'dark'; // Fallback
10
}
11
12
export function getInitialTheme(savedTheme: string | null): 'light' | 'dark' {
13
  if (savedTheme === 'light' || savedTheme === 'dark') {
14
    return savedTheme;
15
  }
16
  return getOSPreferredTheme();
17
}
18
19
export function shouldAriaPressedBeTrue(theme: string): boolean {
20
  return theme === 'dark';
21
}
22
23
export function getThemeAriaLabel(theme: string): string {
24
  return `Switch to ${theme === 'dark' ? 'light' : 'dark'} mode`;
25
}
26
27
export function isValidTheme(theme: string): theme is 'light' | 'dark' {
28
  return theme === 'light' || theme === 'dark';
29
}
30